{$CLEO .s}
{$INCLUDE_ONCE ../cleo_tester.inc}

script_name "0A99"
test("0A99 (set_current_directory)", tests)
terminate_this_custom_script


function tests
    before_each(@setup)
    after_each(@cleanup)
    
    it("should set param 0", test1)
    it("should set param 1", test2)
    it("should set virtual paths", test3)
    it("should set script path", test4)
    it("should enter relative sub-path", test5)
    return
    
    
    :setup
        0@ = allocate_memory {size} 512
        set_current_directory {path} 0 // game root
    return
    
    
    :cleanup
        free_memory {address} 0@
    return
    
    
    function test1
        set_current_directory {path} 0 // game root
        0@ = resolve_filepath ""
        assert_eqs(0@, "") // relative to root, so empty
    end
    
    
    function test2
        set_current_directory {path} 1 // user files
        0@ = resolve_filepath ""
        assert_suffix(0@, "\GTA San Andreas User Files", true)
    end
    
    
    function test3
        set_current_directory {path} "root:" // game root
        0@ = resolve_filepath ""
        assert_eqs(0@, "") // relative to root, so empty
        
        set_current_directory {path} "user:" // user files
        0@ = resolve_filepath ""
        assert_suffix(0@, "\GTA San Andreas User Files", true)
        
        set_current_directory {path} "cleo:" // cleo directory
        0@ = resolve_filepath ""
        assert_eqs(0@, "cleo") // relative to root
        
        set_current_directory {path} "cleo:\cleo_plugins" // cleo sub-directory
        0@ = resolve_filepath ""
        assert_eqs(0@, "cleo\cleo_plugins") // relative to root
    end
    
    
    function test4
        set_current_directory {path} ".\\" // this script's location
        0@ = resolve_filepath ""
        assert_eqs(0@, "cleo\cleo_tests\FilesystemOperations") // relative to root
    end
    
        
    function test5
        set_current_directory {path} "root:"
        set_current_directory {path} "data"
        set_current_directory {path} "script"
        
        0@ = resolve_filepath ""
        assert_eqs(0@, "data\script") // relative to root
        
        does_file_exist {path} "main.scm"
        assert_result_true()
    end
end
